package com.ygxsk.carhome.ui.order;

import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.blankj.utilcode.util.ActivityUtils;
import com.blankj.utilcode.util.NetworkUtils;
import com.blankj.utilcode.util.ObjectUtils;
import com.blankj.utilcode.util.ToastUtils;
import com.blankj.utilcode.util.Utils;
import com.flyco.roundview.RoundTextView;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
import com.ygxsk.carhome.R;
import com.ygxsk.carhome.alertview.AlertView;
import com.ygxsk.carhome.alertview.OnItemClickListener;
import com.ygxsk.carhome.constant.ConstantApi;
import com.ygxsk.carhome.constant.ExtraKey;
import com.ygxsk.carhome.event.EventApplySubmit;
import com.ygxsk.carhome.listener.DoubleClickListener;
import com.ygxsk.carhome.response.MyOrderBean;
import com.ygxsk.carhome.ui.ErrorActivity;
import com.ygxsk.carhome.ui.adapter.OrderDetailAdapter;
import com.ygxsk.carhome.utils.CommUtils;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

import java.util.ArrayList;

import butterknife.BindView;


/**
 * @date 2018/1/11 0011
 * @auther itchenqi
 * @description 订单详情界面。
 */
public class OrderDetailActivity extends ErrorActivity {

    private String messageNull = "暂无数据";


    //_____________________________________________________________________


    /**
     * 填充该界面的弹窗内容
     */
//    private AlertView mAlertView;

    //拉动布局
    @BindView(R.id.refreshlayoutinorderdetail)
    SmartRefreshLayout refreshLayoutInDetail;

    @BindView(R.id.recyclerviewinorderdetail)
    RecyclerView recyclerViewInOrderdetail;

    /**
     * 订单详情内商品列表
     */
    private ArrayList<MyOrderBean> mDatasResources = new ArrayList<>();

    /**
     * 订单详情内是适配器内容
     */
    private OrderDetailAdapter orderDetailAdapter;

    /**
     * 获取接口内的订单详情内容。
     */
    private String orderNoPass;


    //===================================================================
    /**
     * 底部面板包含的两组按钮的内容，原来叫：layoutThreeButton
     */
    @BindView(R.id.layoutpayorapplybuttons)
    RelativeLayout layoutPayOrApplyButtons;

    //__________________________________________________________

    /**
     * 展示取消订单按钮
     */
    private final int SHOW_CANCELORDER_ONLY_PAY = 1;
    /**
     * 展示取消订单和立即付款两个按钮
     */
    private final int SHOW_CANCEL_SUREPAY_TWO_PAY = 2;
    /**
     * 两个按钮均不展示，且外侧布局也不能展示
     */
    private final int SHOW_NO_TWO_PAY = 3;


    //_____________________________________________________________________
    /**
     * 底部面板包裹两个按钮的内容【取消订单】和【立即付款，去支付】
     */
    @BindView(R.id.layouttwopaybutton)
    RelativeLayout layoutTwoPayButton;

    /**
     * 立即付款 去支付
     */
    @BindView(R.id.buttongopay)
    RoundTextView buttonGoPay;
    /**
     * 取消订单
     */
    @BindView(R.id.buttoncancelorder)
    RoundTextView buttonCancelOrder;

    //__________________________________________________________

    /**
     * 关于退货逻辑的3个按钮都不能展示
     */
    private final int SHOW_NO_TWO_APPLY = 4;

    /**
     * 展示确认收货和申请退货按钮
     */
    private final int SHOW_CONFIRM_APPLYFOR_APPLY = 5;

    /**
     * 展示确认收货和退货详情按钮
     */
    private final int SHOW_CONFIRM_APPLYDETAIL_APPLY = 6;

    /**
     * 仅仅展示确认收货按钮
     */
    private final int SHOW_CONFIRM_ONLY_APPLY = 7;

    /**
     * 订单状态已完成，但是申请过退货，也处理完毕退货，那么仅仅展示【退货详情按钮】
     */
    private final int SHOW_APPLYDETAIL_ONLY_APPLY = 8;

    //_____________________________________________________________________

    /**
     * 底部面板包裹三个 收货退货的按钮【确认收货】【申请退货】【退货详情】
     */
    @BindView(R.id.layouttwoapplybutton)
    RelativeLayout layoutTwoApplyButton;

    /**
     * 确认收货按钮
     */
    @BindView(R.id.buttonconfirmreceipt)
    RoundTextView buttonConfirmReceipt;

    /**
     * 申请退货按钮
     */
    @BindView(R.id.buttonapplyfororder)
    RoundTextView buttonApplyForOrder;

    /**
     * 查看退货详情的按钮
     */
    @BindView(R.id.buttonapplyfordetail)
    RoundTextView buttonApplyForDetail;

    //__________________________________________________________

//    private CompositeDisposable mCompositeDisposable = new CompositeDisposable();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        processExtraData();

//        if (mCompositeDisposable == null) {
//            mCompositeDisposable = new CompositeDisposable();
//        }

        initloading();

        initViews();

        gainDatas();

        //这里因为申请退货，提交成功之后，要刷新一遍详情，因为提交成功-->退货详情-->再返回，到订单详情
        if (!EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().register(this);
        }


    }

    @Override
    public Resources getResources() {//还原字体大小
        Resources res = super.getResources();
        //非默认值
        if (res.getConfiguration().fontScale != 1) {
            Configuration newConfig = new Configuration();
            newConfig.setToDefaults();//设置默认
            res.updateConfiguration(newConfig, res.getDisplayMetrics());
        }
        return res;
    }


    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);

        setIntent(intent);
        //must store the new intent unless getIntent() will return the old one
        processExtraData();

        //LogUtils.d("itchen--orderDetailActivity---onNewIntent");
    }

    private void processExtraData() {

        //use the data received here
        Bundle bundle = this.getIntent().getExtras();

        if (bundle != null) {
            orderNoPass = bundle.getString(ExtraKey.EXTRA_ORDER_NUMBER);
        }

    }


    @Override
    protected int getContentViewId() {
        return R.layout.activity_order_detail;
    }

    @Override
    protected void initToolBar(ToolbarHelper toolbarHelper) {

//        toolbarHelper.setLayoutSao(false, null);

        toolbarHelper.setTitle("订单详情");

        toolbarHelper.setLayoutLeft(true, R.drawable.backicon, new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                methodBack();
            }
        });


        toolbarHelper.setLayoutClose(false, "", null);


        toolbarHelper.setLayoutRight(false, 0, "", null);

    }

    @Override
    public void onClickNodata(View v) {

        gainDatas();

    }

    @Override
    public void initViews() {

        //填充假数据内容
        //ArrayList<ShopCartBean> mDetails = new ArrayList<>();
        /*for (int index = 0; index < 3; index++) {

            mDetails.add(new ShopCartBean(index,//
                    "熊孩子综合蔬菜干即食香菇脆黄秋\n" +
                            "葵脆混合果蔬干休闲小零合果蔬干休闲小零食合果蔬干休闲小零食合果蔬干休闲小零食食",//
                    ConstantApi.imagetUrl7,
                    "儿童零食大礼包1包",//
                    "69.00",//
                    "100"//
            ));//
        }*/

        //其实这也行 也是一个列表 但是只是列表内是只有一条数据
        //ArrayList<MyOrderBean> mDatas = new ArrayList<>();

        /*MyOrderBean myOrderBean = new MyOrderBean();
        myOrderBean.setCount(11);
        myOrderBean.setOrdersNo("9987776622");
        myOrderBean.setDetailList(mDetails);
        myOrderBean.setTotalAmount("88.00");
        myOrderBean.setOrdersState("待付款");//这里应该还有一个状态码。
        mDatas.add(myOrderBean);//*/

        //因为有下拉刷新内容。
        recyclerViewInOrderdetail.setLayoutManager(new LinearLayoutManager(this));

        //这个可以不要因为该界面只有一条数据.暂时不删除吧
        //recyclerViewInOrderdetail.addItemDecoration(new DividerItemDecorationInDetail(this));
        //orderDetailAdapter = new OrderTransAdapter(R.layout.orderdetailadapter, mDatasResources);

        //这个要特别注意，因为订单详情和订单列表内适配器布局一模一样。因为可能订单列表需要添加额外蒙层，所以稍许不同，分开两个名字。
        orderDetailAdapter = new OrderDetailAdapter(R.layout.orderdetailadapter, mDatasResources);
        recyclerViewInOrderdetail.setAdapter(orderDetailAdapter);


        //header内容
        //====================================================================================================
        //内部的recycler点击可以进入详情界面
        refreshLayoutInDetail.setOnRefreshListener(new OnRefreshListener() {
            @Override
            public void onRefresh(final RefreshLayout refreshlayout) {

                refreshlayout.getLayout().post(new Runnable() {
                    @Override
                    public void run() {

                        gainDatas();

                        refreshlayout.finishRefresh();
                    }
                });

            }
        });

    }

    /**
     * 获取列表的头部信息,并且在该逻辑之中刷新底部的 两组按钮。
     */
    private View getHeaderView(RecyclerView recyclerView, MyOrderBean orderBean) {


        View viewHeader;

        if (!ObjectUtils.isEmpty(recyclerView)) {
            viewHeader = getLayoutInflater().inflate(R.layout.headerinorderdetail,//
                    (ViewGroup) recyclerView.getParent(),//
                    false);//
        } else {
            viewHeader = getLayoutInflater().inflate(R.layout.headerinorderdetail, null);//
        }

        //2019年11月13日代码:做测试用的进入退货的界面
        /*if (viewHeader != null) {
            viewHeader.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                }
            });
        }*/

        //订单状态
        TextView textViewOrderState = (TextView) viewHeader.findViewById(R.id.textvieworderstate);
        textViewOrderState.setText("订单状态");

        //订单状态描述文字 订单状态的描述文字
        TextView textviewOrderStateDes = (TextView) viewHeader.findViewById(R.id.textvieworderstatedes);

        //订单状态图片信息订单状态右侧的图片信息内容
        ImageView imageViewState = (ImageView) viewHeader.findViewById(R.id.imageviewstate);

        //初始设置为隐藏状态
        CommUtils.setViewGone(imageViewState);

        //2019年04月27日，订单编号内容不要了去掉
        //TextView textviewOrderNumber = (TextView) viewHeader.findViewById(R.id.textviewordernumber);
        TextView textviewOrderReceiver = (TextView) viewHeader.findViewById(R.id.textvieworderreceiver);

        //订单的创建时间
        TextView textviewCreateTime = (TextView) viewHeader.findViewById(R.id.textviewcreatetime);

        //这些信息从商品结算界面得来。
        //sendType 1（配送方式 1自提、2送货上门）2、receiptCode（1、当日达；2、次日达）3、receiptAddress（收货地址）
        //2019年04月26日: 动态左侧：提货地址和送货上门
        //2019年04月27日 不要动态这个
        //TextView textViewAddressDesIndetail = (TextView) viewHeader.findViewById(R.id.textviewaddressdesindetail);

        //商品的提货地址信息,或者收货地址的信息
        TextView textviewAddress = (TextView) viewHeader.findViewById(R.id.textviewaddress);

        //配送方式：上门自提 送货上门  必须展示的 手动填写
        //sendType 1（配送方式 1自提、2送货上门）2、receiptCode（1、当日达；2、次日达）3、receiptAddress（收货地址）
        TextView textviewDeliveryMethod = (TextView) viewHeader.findViewById(R.id.textviewdeliverymethod);

        //配送状态（物流的状态）
        LinearLayout layoutcontLogisticsStatus = (LinearLayout) viewHeader.findViewById(R.id.layoutcontlogisticsstatus);

        //支付方式的动态布局内容
        LinearLayout layoutPayType = (LinearLayout) viewHeader.findViewById(R.id.layoutpaytype);

        //支付方式描述
        TextView textviewPayTypeDes = (TextView) viewHeader.findViewById(R.id.textviewpaytypedes);

        //农品奥莱的配送时间
        LinearLayout layoutDeliveryTime = (LinearLayout) viewHeader.findViewById(R.id.layoutdeliverytime);

        //农品奥莱的配送时间
        TextView textviewDeliveryTimedes = (TextView) viewHeader.findViewById(R.id.textviewdeliverytimedes);

        //提货码，店铺自提需要，送货上门不需要
        LinearLayout layoutContentTiCode = (LinearLayout) viewHeader.findViewById(R.id.layoutcontentticode);

        TextView textviewAccountPickupCode = (TextView) viewHeader.findViewById(R.id.textviewaccountpickupcode);

        //确认付款时候的备注信息
        TextView textviewAccountMark = (TextView) viewHeader.findViewById(R.id.textviewaccountmark);

        //===================================================== ===============================================
        //orderDetailAdapter.addHerView(viewHeader);
        //原始代码 未优化之前的
        //int orderState = orderBean.getOrderState();
        //String payTypeInfo  = orderBean.getPayTypeInfo();
        //2018年05月29日做确认收货的重新判断
        //int orderStateInt = Integer.parseInt(orderState);
        //final String orderStateDes = orderBean.getOrderStateInfo();
        //填充数据内容
        //final String orderNumbmer = orderBean.getOrderNo();//服务器给过来的
        //final String time = orderBean.getCreateTime();
        //final String address = orderBean.getAddress();
        //String payMode = orderBean.getPayMode();


        orderNoPass = orderBean.getOrderNo();//重新更正下订单号

        //isReturned 0不可以申请退货，1可以申请退货，2查看退货详情
        //0          待付款
        //10         已付款
        //10-20之间  已付款且已接单
        //20         已完成--已付款
        //30         已取消(用户取消)
        //31         已取消(定时取消)
        //32         已取消(成团失败取消)

        //_______________________________________________________________________________

        //右侧图片内容。
        if (orderBean.getOrderState() == 0) {//订单状态--待付款-取消订单+立即付款均展示右侧图片

            CommUtils.setViewVisible(imageViewState);
            imageViewState.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), R.drawable.orderwaiting));

            CommUtils.setViewGone(layoutPayType);//支付方式不展示。

            CommUtils.setViewVisible(layoutPayOrApplyButtons);

            //CommUtils.setViewVisible(layoutTwoButton);//
            layoutPayButtonLogic(SHOW_CANCEL_SUREPAY_TWO_PAY, orderBean.getOrderNo());//

            //CommUtils.setViewGone(buttonConfirmReceipt);
            //待付款 那么退货的三个状态都不展示
            layoutApplyButtonLogic(SHOW_NO_TWO_APPLY, orderBean, "");


        } else if (orderBean.getOrderState() == 10) {//订单状态-已付款(等待成团，等待配货,这里应该仅仅展示取消订单按钮)

            CommUtils.setViewVisible(imageViewState);
            imageViewState.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), R.drawable.orderfahuo));

            CommUtils.setViewVisible(layoutPayType);
            //method_paytype(textviewPayTypeDes, orderBean.getPayMode(), orderBean.getPayTypeInfo());

            CommUtils.setText(textviewPayTypeDes, orderBean.getPayTypeInfo());

            CommUtils.setViewVisible(layoutPayOrApplyButtons);

            layoutPayButtonLogic(SHOW_CANCELORDER_ONLY_PAY, orderBean.getOrderNo());//均不展示

            //CommUtils.setViewGone(buttonConfirmReceipt);
            //已付款 状态，后台还未能变更状态，也不展示。
            layoutApplyButtonLogic(SHOW_NO_TWO_APPLY, orderBean, "");

        } else if ((orderBean.getOrderState() > 10) && (orderBean.getOrderState()) < 20) {
            //2018年05月29日 这个重新做判断修改订单状态-已付款且已接单(已成团/已发货 待收货)

            CommUtils.setViewVisible(imageViewState);
            imageViewState.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), R.drawable.orderfahuo));

            CommUtils.setViewVisible(layoutPayType);
            //method_paytype(textviewPayTypeDes, orderBean.getPayMode(), orderBean.getPayTypeInfo());
            CommUtils.setText(textviewPayTypeDes, orderBean.getPayTypeInfo());

            CommUtils.setViewVisible(layoutPayOrApplyButtons);

            //CommUtils.setViewVisible(buttonConfirmReceipt);
            layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());//支付和取消订单均不展示
            //_____________________________________________________________________________________
            //后台人员重新确认过的订单状态-状态码
            //0：待付款
            //10:已付款（等待成团/正在配货）
            //11:已付款-->已成团
            //12:已付款-->已发货
            //13:已付款-->已发货(已成团)-->已送至小区
            //20:已付款-->已发货(已成团)-->已送至小区-->已完成
            //30:已取消-->(用户取消已付款或未付款订单)
            //31:已取消-->(定时取消未付款订单)
            //32:已取消--已取消(成团失败取消)

            //_____________________________________________________________________________________
            //# 原始订单详情的几个状态 #
            //1. 0          待付款
            //2. 10         已付款
            //3. 10-20之间   已付款且已接单
            //4. 20         已完成--已付款
            //5. 30         已取消(用户取消)
            //6. 31         已取消(定时取消)
            //7. 32         已取消(成团失败取消)
            //_____________________________________________________________________________________
            //# 2019年11月20日关于订单详情新增的几个状态 #
            //1. 待付款-取消订单、付款
            //2. 已付款且未接单-取消订单
            //3. 已付款且已接单（已发货、未申请退货）-申请退货、确认收货
            //4. 已付款且已接单（申请退货-待审核）-退货详情、确认收货
            //5. 已付款且已接单（申请退货-审核通过）-退货详情
            //6. 已付款且已接单（申请退货-审核未通过）-退货详情、确认收货
            //7. 已完成（未申请退货）-无按钮
            //8. 已完成（申请退货）-退货详情
            //9. 已取消-无按钮
            //2019年11月22日，发现（已付款）的订单，用户手动点击（取消订单）那么底部的【退货详情】该不该放开？
            //要不要让他看钱的--退款中/已退款，，等状态。
            //其实 按说是该放开让用于 看退款的。但是没有人 提出这个需求。。。
            //_____________________________________________________________________________________


            //applyState：审核状态:0：待审核；1：审核通过（用户看到退款中）；2：审核不通过；3：退款完成；4：申请已取消
            //_____________________________________________________________________________________

            if (orderBean.getReturnApply() != null) {//【退货单对象】不是空，说明发起了【申请退货】

                //真确的我在后台测试结果：
                //1：刚发起【申请退货】后台正在准备退款,那末orderState : 12 applyState : 0
                //2:后台审核退货通过  orderState : 12 applyState : 1  退货详情内：退款中
                //3:发起了申请退货，但是后台不让审核通过（审核未通过）orderState : 12   applyState : 2 退货详情内：审核未通过
                //4：

                if (orderBean.getReturnApply().getApplyState() == 0) {//待审核
                    //4. 已付款且已接单（申请退货-待审核）-【退货详情】、【确认收货】
                    layoutApplyButtonLogic(SHOW_CONFIRM_APPLYDETAIL_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 1) {//审核通过(用户看到退款中)
                    //12:标识 已发货  13：已经到自提点
                    //5. 已付款且已接单（申请退货-审核通过）-【退货详情】
                    layoutApplyButtonLogic(SHOW_APPLYDETAIL_ONLY_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 2) {//审核未通过

                    //6. 已付款且已接单（申请退货-审核未通过）-【退货详情】、【确认收货】
                    layoutApplyButtonLogic(SHOW_CONFIRM_APPLYDETAIL_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 3) {//退款完成

                    //退款完成，已退款--仅仅展示【退货详情】
                    layoutApplyButtonLogic(SHOW_APPLYDETAIL_ONLY_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 4) {//申请已取消

                    //【用户取消申请】，那么订单还是正常发货状态，那末展示【退货详情】,【确认收货】
                    layoutApplyButtonLogic(SHOW_CONFIRM_APPLYDETAIL_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else {
                    //假如没有一种符合申请退货类的状态值：//均不展示 至少不让底部按钮执行操作。
                    layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());
                }


            } else {//退货单对象是空，说明可以发起【申请退货】
                //3. 已付款且已接单（已发货、未申请退货）-申请退货、确认收货
                layoutApplyButtonLogic(SHOW_CONFIRM_APPLYFOR_APPLY, orderBean, "");
            }

            //____________________________________________________________________________________________

        } else if (orderBean.getOrderState() == 20) {//订单状态-已完成--已付款-

            //1：用户已经取消申请：orderState : 20  applyState : 4 ，点击【确认收货】：

            CommUtils.setViewVisible(imageViewState);
            imageViewState.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), R.drawable.orderyifu));

            CommUtils.setViewVisible(layoutPayType);
            //method_paytype(textviewPayTypeDes, orderBean.getPayMode(), orderBean.getPayTypeInfo());
            CommUtils.setText(textviewPayTypeDes, orderBean.getPayTypeInfo());


            //CommUtils.setViewGone(buttonConfirmReceipt);

            //已付款，已完成 展示：仅仅可以查看 【退货详情】
            //订单状态已完成，但是申请过退货，也处理完毕退货，那么仅仅展示【退货详情按钮】
            if (orderBean.getReturnApply() != null) {

                //applyState：审核状态:    0：待审核；1：审核通过（用户看到退款中）；2：审核不通过；3：退款完成；4：申请已取消

                //该是：只要是已完成的状态，那么就不该有【确认收货】才对。
                CommUtils.setViewVisible(layoutPayOrApplyButtons);

                layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());//均不展示

                if (orderBean.getReturnApply().getApplyState() == 0) {//可能不会有，但是写上 和234保持一致

                    layoutApplyButtonLogic(SHOW_APPLYDETAIL_ONLY_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 1) {//可能不会有，但是写上 和234保持一致

                    layoutApplyButtonLogic(SHOW_APPLYDETAIL_ONLY_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 2) {//这种产生：发起申请退货，但是不让审核通过

                    layoutApplyButtonLogic(SHOW_APPLYDETAIL_ONLY_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 3) {//退款完成

                    layoutApplyButtonLogic(SHOW_APPLYDETAIL_ONLY_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else if (orderBean.getReturnApply().getApplyState() == 4) {//申请已取消

                    //LogUtils.d("itchen--->仅仅展示【退货详情】按钮");
                    //第一种处理
                    layoutApplyButtonLogic(SHOW_APPLYDETAIL_ONLY_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                    //第二种处理：买三件商品退了一件，然后我也【取消申请】那么，就该正常发货，只是不能再此发起【申请退货】，那么该有【退货详情】【确认收货】
                    //*第二种处理 这种状态不应该存在，虽然是三个商品退一件，但是也该是一个订单。用户手动点击【取消申请】和处于【用户已经取消申请退货】，但是手动又点击了【确认收货】
                    //*后台都将订单变为（已完成）状态，那么就该仅仅展示【退货详情】才对。
                    // 所以，总结上边的三句话，该是：只要是已完成的状态，那么就不该有【确认收货】才对。
                    // 所以，上边的几句话决定了，底部这一行代码 是错误的。
                    //layoutApplyButtonLogic(SHOW_CONFIRM_APPLYDETAIL_APPLY, orderBean, orderBean.getReturnApply().getReturnApplyNo());

                } else {
                    //假如没有一种符合申请退货类的状态值：//均不展示 至少不让底部按钮执行操作。
                    layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());
                }

            } else {//订单已完成了，并且也未发起【申请退货】

                CommUtils.setViewGone(layoutPayOrApplyButtons);
                layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());//均不展示
                //那么，退货布局内，什么按钮都不展示
                layoutApplyButtonLogic(SHOW_NO_TWO_APPLY, orderBean, "");
            }

        } else if (orderBean.getOrderState() == 30) {//订单状态-已取消(用户取消)
            CommUtils.setViewVisible(imageViewState);
            imageViewState.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), R.drawable.orderfail));

            CommUtils.setViewGone(layoutPayType);
            CommUtils.setViewGone(layoutPayOrApplyButtons);


            //CommUtils.setViewGone(layoutTwoButton);
            layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());//均不展示

            //CommUtils.setViewGone(buttonConfirmReceipt);
            //用户自己取消，那么就什么都不展示
            layoutApplyButtonLogic(SHOW_NO_TWO_APPLY, orderBean, "");

        } else if (orderBean.getOrderState() == 31) {//订单状态-已取消(定时取消)

            CommUtils.setViewVisible(imageViewState);
            imageViewState.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), R.drawable.orderfail));

            CommUtils.setViewGone(layoutPayType);

            CommUtils.setViewGone(layoutPayOrApplyButtons);

            //CommUtils.setViewGone(layoutTwoButton);
            layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());//均不展示

            //CommUtils.setViewGone(buttonConfirmReceipt);
            //定时取消，那么也是关于退货类的，什么都不展示
            layoutApplyButtonLogic(SHOW_NO_TWO_APPLY, orderBean, "");

        } else if (orderBean.getOrderState() == 32) {//订单状态-已取消(成团失败取消)
            CommUtils.setViewVisible(imageViewState);
            imageViewState.setImageDrawable(ContextCompat.getDrawable(Utils.getApp(), R.drawable.orderfail));

            CommUtils.setViewGone(layoutPayType);

            CommUtils.setViewGone(layoutPayOrApplyButtons);
            //CommUtils.setViewGone(layoutTwoButton);
            layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());//均不展示

            //CommUtils.setViewGone(buttonConfirmReceipt);
            //这种成团失败，也是什么都不展示
            layoutApplyButtonLogic(SHOW_NO_TWO_APPLY, orderBean, "");

        } else {//其他未找到状态。

            CommUtils.setViewGone(imageViewState);//图片隐藏掉
            CommUtils.setViewGone(layoutPayType);//支付方式隐藏掉
            CommUtils.setViewGone(layoutPayOrApplyButtons);

            //CommUtils.setViewGone(layoutTwoButton);
            layoutPayButtonLogic(SHOW_NO_TWO_PAY, orderBean.getOrderNo());//均不展示

            //CommUtils.setViewGone(buttonConfirmReceipt);

            //这种意外情况也是什么都不展示。
            layoutApplyButtonLogic(SHOW_NO_TWO_APPLY, orderBean, "");

        }

        //_______________________________________________________________________________

        //订单编号的处理不要了，改为收货人姓名
        textviewOrderReceiver.post(new Runnable() {
            @Override
            public void run() {
                //CommUtils.setText(textviewOrderReceiver, orderBean.getOrderNo());
                CommUtils.setText(textviewOrderReceiver, orderBean.getConsignee() + "  " + orderBean.getPhone());
            }
        });

        //下单时间的处理
        textviewCreateTime.post(new Runnable() {
            @Override
            public void run() {
                CommUtils.setText(textviewCreateTime, orderBean.getCreateTime());
            }
        });

        //----------------------------------------------------------------------------------

        //收货地址
        textviewAddress.post(new Runnable() {
            @Override
            public void run() {

                CommUtils.setText(textviewAddress, orderBean.getAddress());

            }
        });

        /*if (orderBean.getSendType() == 1) {//sendType（配送方式 1自提、2送货上门）

            CommUtils.setText(textViewAddressDesIndetail, "提货地址：");
            textviewAddress.post(new Runnable() {
                @Override
                public void run() {
                    CommUtils.setText(textviewAddress, orderBean.getAddress());
                }
            });

        } else if (orderBean.getSendType() == 2) {//送货上门

            CommUtils.setText(textViewAddressDesIndetail, "送货上门：");

            textviewAddress.post(new Runnable() {
                @Override
                public void run() {

                    //receiptCode（1、当日达；2、次日达）
                    if (orderBean.getReceiptCode() == 1) {//当日达

                        StringBuffer stringBuffer = new StringBuffer();
                        stringBuffer.append("（");
                        stringBuffer.append("当日达");
                        stringBuffer.append("）");

                        CommUtils.setText(textviewAddress, stringBuffer.toString() + orderBean.getReceiptAddress());

                    } else if (orderBean.getReceiptCode() == 2) {//次日达

                        StringBuffer stringBuffer = new StringBuffer();
                        stringBuffer.append("（");
                        stringBuffer.append("次日达");
                        stringBuffer.append("）");

                        CommUtils.setText(textviewAddress, stringBuffer.toString() + orderBean.getReceiptAddress());

                    }

                }
            });

        } else {

            CommUtils.setText(textViewAddressDesIndetail, "提货地址：");

            //提货地址信息
            textviewAddress.post(new Runnable() {
                @Override
                public void run() {
                    CommUtils.setText(textviewAddress, orderBean.getAddress());
                }
            });
        }*/


        //----------------------------------------------------------------------------------

        //sendType（配送方式 1自提、2送货上门）如果是农品奥莱，那么该块逻辑也是一样
        if (orderBean.getSendType() == 1) {//店铺自提  需要提货码

            layoutContentTiCode.post(new Runnable() {
                @Override
                public void run() {

                    layoutContentTiCode.setVisibility(View.VISIBLE);
                    //2019年04月25日新增提货码字段
                }
            });

            textviewDeliveryMethod.post(new Runnable() {
                @Override
                public void run() {
                    textviewDeliveryMethod.setText("上门自提");
                }
            });

            textviewAccountPickupCode.post(new Runnable() {
                @Override
                public void run() {
                    CommUtils.setText(textviewAccountPickupCode, orderBean.getAccessCode());
                }
            });

        } else if (orderBean.getSendType() == 2) {//送货上门  不需要提货码 ，2023-4-13 10:35:13 需求变动，也展示提货码

            layoutContentTiCode.post(new Runnable() {

                @Override
                public void run() {
                    layoutContentTiCode.setVisibility(View.VISIBLE);
                }
            });


            textviewDeliveryMethod.post(new Runnable() {
                @Override
                public void run() {
                    textviewDeliveryMethod.setText("送货上门");
                }
            });

            textviewAccountPickupCode.post(new Runnable() {
                @Override
                public void run() {
                    CommUtils.setText(textviewAccountPickupCode, orderBean.getAccessCode());
                }
            });


        }

        //__________________________________________________________
        //2019年11月20日新增：配送状态(物流信息)
        //根据logisticsInfo 物流信息判断，如果是空的，就不展示【配送状态】这一栏，否则就展示出来
        if (!TextUtils.isEmpty(orderBean.getLogisticsInfo())) {

            layoutcontLogisticsStatus.setVisibility(View.VISIBLE);

            //并且填充物流信息：
            TextView textviewLogisticsStatus = (TextView) viewHeader.findViewById(R.id.textviewlogisticsstatus);
            CommUtils.setText(textviewLogisticsStatus, orderBean.getLogisticsInfo());

        } else {
            layoutcontLogisticsStatus.setVisibility(View.GONE);
        }
        //__________________________________________________________


        //配送时间 仅仅是农品奥莱的时候才展示 1是奥莱的产品 0不是奥莱的产品
        if (orderBean.getIsVipOrder() == 1) {//如果发现是农品奥莱的产品

            CommUtils.setViewVisible(layoutDeliveryTime);

            textviewDeliveryTimedes.post(new Runnable() {
                @Override
                public void run() {
                    CommUtils.setText(textviewDeliveryTimedes, orderBean.getEstimatedArrivalTime());
                }
            });

        } else {

            CommUtils.setViewGone(layoutDeliveryTime);

        }


        //填充顶部。填充底部
        //订单状态的描述文字。
        //========================================================================================================
        textviewOrderStateDes.post(new Runnable() {
            @Override
            public void run() {
                CommUtils.setText(textviewOrderStateDes, orderBean.getOrderStateInfo());
            }
        });

        //底部的备注信息内容
        //提交订单时候用户提交的备注信息
        textviewAccountMark.post(new Runnable() {
            @Override
            public void run() {
                CommUtils.setText(textviewAccountMark, orderBean.getTips());
            }
        });

        //=========================================================================================================

        return viewHeader;

    }

    /**
     * @date 2018/2/27 0027
     * @auther itchenqi
     * @description 订单详情内小列表的适配器内容
     */
    /*private class DividerItemDecorationInDetail extends Y_DividerItemDecoration{

        public DividerItemDecorationInDetail(Context context) {
            super(context);
        }

        @Override
        public Y_Divider getDivider(int itemPosition) {

            Y_Divider divider = new Y_DividerBuilder()
                    .setBottomSideLine(true, 0xF5F5F5, 6, 0, 0)
                    .create();

            return divider;
        }
    }*/
    @Override
    public void gainDatas() {

        if (NetworkUtils.isConnected()) {
            if (!TextUtils.isEmpty(orderNoPass)) {
//                getServerDatas(orderNoPass);
            }
        } else {
            netWorkError();
            //setEnableLoadmore(refreshLayoutInDetail,false);
        }

    }

    @Override
    protected void onResume() {
        super.onResume();
        //LogUtils.d("itchen----orderDetailActivity----onResume");
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onEventMainThreadEventApplyList(EventApplySubmit eventApplySubmit) {

        if (eventApplySubmit != null) {

            if (eventApplySubmit.getMessage() == ConstantApi.EVENTBUS_APPLYSUBMIT) {

                gainDatas();

            }

        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        //重置
        orderNoPass = "";

        if (mAlertView != null) {
            if (mAlertView.isShowing()) {
                mAlertView.dismiss();
                mAlertView = null;
            }
        }

        if (mCompositeDisposable != null) {
            mCompositeDisposable.clear();
            mCompositeDisposable = null;//直接清空
        }


        if (mDatasResources != null && !mDatasResources.isEmpty()) {
            mDatasResources.clear();
        }

        if (orderDetailAdapter != null) {
            orderDetailAdapter.notifyDataSetChanged();
            orderDetailAdapter = null;
        }

        EventBus.getDefault().unregister(this);

        //LogUtils.d("itchen----orderDetailActivity----onDestroy");

    }

//    private ApiRequestListener<JSONObject> apiRequestListener = new ApiRequestListener<JSONObject>() {
//        @Override
//        public void addLog(int what, Request<JSONObject> request, Map<String, Object> hashMap, String errorContent) {
//            CommUtils.addLog(what, request, hashMap, errorContent);
//        }
//
//        @Override
//        public void onStart(int method) {
//
//            switch (method) {
//                case ConstantApi.WHAT_GETORDERDETAIL: {
//
//                    //setEnableLoadmore(refreshLayoutInDetail,true);
//                    loadingGone();
//
//                    break;
//                }
//                default:
//                    break;
//            }
//
//        }
//
//        @Override
//        public void onSuccess(int method, Response<JSONObject> response, Request<JSONObject> request, Map<String, Object> hashMap) {
//
//            switch (method) {
//                //=========================================================================================
//                case ConstantApi.WHAT_GETORDERDETAIL: {
//
//                    //解析data内容。
//                    MyOrderDetailTools myOrderDetailTools = MyOrderDetailTools.getMyOrderDetailTools(response.get().toString());
//
//                    if (myOrderDetailTools != null) {
//
//                        if (myOrderDetailTools.getCode() == ConstantApi.REQUEST_20000) {
//
//                            if (!mDatasResources.isEmpty()) {
//                                mDatasResources.clear();
//                            }
//
//                            MyOrderBean myOrderBean = myOrderDetailTools.getData();
//                            //做测试：
//                            //myOrderBean.setIsVipOrder(1);
//
//                            if (!ObjectUtils.isEmpty(myOrderBean)) {
//
//                                //SPUtils.getInstance().put(ConstantApi.P_ORDERDETAIL_OLE_ISVIPORDER,myOrderBean.getIsVipOrder());
//
//                                //-------------------------------------------------------------------------
//                                //若 isVipOrder =1;是会员商品 那末不显示商品价格和下边的总价格
//                                //若 isVipOrder =0;不是是会员商品，是普通的商品，标题文字后边的价格就展示出来
//                                if (myOrderBean.getOrderDetails() != null) {
//                                    for (ShopCartBean shopCartBean : myOrderBean.getOrderDetails()) {
//                                        shopCartBean.setIsVipOrderSon(myOrderBean.getIsVipOrder());
//                                    }
//                                }
//                                //-------------------------------------------------------------------------
//
//                                //填充数据刷新出列表
//                                mDatasResources.add(myOrderBean);
//
//                                orderDetailAdapter.removeAllHeaderView();
//
//                                orderDetailAdapter.addHeaderView(getHeaderView(recyclerViewInOrderdetail, myOrderBean));
//
//                                //2019年11月18日将 订单编号重新赋值从服务器获取的最新值,便于查询 退货的列表内容
//                                orderNoPass = myOrderBean.getOrderNo();
//
//                            } else {
//
//                                //空的怎么办呢
//                                orderDetailAdapter.removeAllHeaderView();
//
//                                CommUtils.checkCurrently(OrderDetailActivity.this,//
//                                        R.drawable.errororder,//
//                                        messageNull,//
//                                        ConstantApi.CURRENTLYNODATA);//
//
//                            }
//
//                            if (orderDetailAdapter != null) {
//                                orderDetailAdapter.notifyDataSetChanged();
//                            }
//
//                        } else {
//
//                            apiRequestListener.onError(method, myOrderDetailTools.getCode(), myOrderDetailTools.getMessage());
//
//                            apiRequestListener.addLog(method, request, hashMap, CommUtils.addLogFormatCodeMessage(myOrderDetailTools.getCode(), myOrderDetailTools.getMessage()));
//
//                        }
//                    }
//                    break;
//                }
//
//                //===================================================================
//                case ConstantApi.WHAT_CANCELORDER: {//取消订单成功
//
//                    SingleObjectTools singleObjectTools = SingleObjectTools.getSingleObject(response.get().toString());
//
//                    if (singleObjectTools != null) {
//
//                        if (singleObjectTools.getCode() == ConstantApi.REQUEST_20000) {
//
//                            //去掉订单成功，通知当前页面刷新状态.并且需要通知订单列表刷新
//                            mCompositeDisposable.add(Observable.just(1, 2)
//                                    .subscribeOn(AndroidSchedulers.mainThread())//
//                                    .observeOn(AndroidSchedulers.mainThread())//
//                                    .compose(OrderDetailActivity.this.bindUntilEvent(ActivityEvent.DESTROY))//
//                                    .subscribe(new Consumer<Integer>() {
//                                        @Override
//                                        public void accept(Integer integer) throws Exception {
//
//                                            if (integer == 1) {
//
//                                                //取消订单成功通知订单列表刷新
//                                                gainDatas();
//
//                                            } else if (integer == 2) {
//
//                                                //发送消息通知订单列表刷新
//                                                EventBus.getDefault().post(new EventOrder(ConstantApi.EVENTBUS_ORDERDETAILTOORDERLIST));
//                                            }
//
//                                        }
//                                    }));
//
//                        } else {
//
//                            apiRequestListener.onError(method, singleObjectTools.getCode(), singleObjectTools.getMessage());
//
//                            apiRequestListener.addLog(method, request, hashMap, CommUtils.addLogFormatCodeMessage(singleObjectTools.getCode(), singleObjectTools.getMessage()));
//
//                        }
//
//                    }
//
//                    break;
//                }
//                //========================================================================
//                case ConstantApi.WHAT_CONFIRMRECEIPT: {//确认收货成功
//
//                    SingleObjectTools singleObjectTools = SingleObjectTools.getSingleObject(response.get().toString());
//
//                    if (singleObjectTools != null) {
//
//                        if (singleObjectTools.getCode() == ConstantApi.REQUEST_20000) {
//
//                            //确认收货成功 通知刷新界面状态,且通知订单列表刷新
//                            mCompositeDisposable.add(Observable.just(1, 2)//
//                                    .subscribeOn(AndroidSchedulers.mainThread())//
//                                    .observeOn(AndroidSchedulers.mainThread())//
//                                    .compose(OrderDetailActivity.this.bindUntilEvent(ActivityEvent.DESTROY))//
//                                    .subscribe(new Consumer<Integer>() {
//                                        @Override
//                                        public void accept(Integer integer) throws Exception {
//
//                                            if (integer == 1) {
//
//                                                //确认收货通知订单列表刷新
//                                                gainDatas();
//
//                                            } else if (integer == 2) {
//
//                                                EventBus.getDefault().post(new EventOrder(ConstantApi.EVENTBUS_ORDERDETAILTOORDERLIST));
//
//                                            }
//                                        }
//                                    }));
//
//
//                        } else {
//                            apiRequestListener.onError(method, singleObjectTools.getCode(), singleObjectTools.getMessage());
//                            apiRequestListener.addLog(method, request, hashMap, CommUtils.addLogFormatCodeMessage(singleObjectTools.getCode(), singleObjectTools.getMessage()));
//
//                        }
//
//                    }
//
//
//                    break;
//                }
//
//                default:
//                    break;
//            }
//
//        }
//
//        @Override
//        public void onError(int method, int statusCode, String message) {
//
//            CommTools.errorTokenOrEqument(mActivityInstance, statusCode, message, _sessionErrorActivity, new SequenceListener() {
//                @Override
//                public void doSomeThing() {
//                    CommUtils.onError(true, OrderDetailActivity.this, statusCode, message);
//                }
//            });
//
//        }
//    };

    /*private void methodReceiveSure(){
        CommUtils.setViewVisible(imageViewState);
        imageViewState.setImageDrawable(ContextCompat.getDrawable(OrderDetailActivity.this, R.drawable.orderfahuo));
        CommUtils.setViewVisible(layoutPayType);
        method_paytype(payMode);

        CommUtils.setViewVisible(layoutThreeButton);
        CommUtils.setViewVisible(buttonConfirmReceipt);

        //CommUtils.setViewGone(layoutTwoButton);
        layoutTwoButtonLogic(SHOW_NO_TWO, orderNumbmer);//均不展示

        buttonConfirmReceipt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //确认收货接口
                CommUtils.checkDialog(mAlertView);

                mAlertView =  new AlertView("", //
                        "确认收货吗？", //
                        "取消", //
                        new String[]{"确定"}, //
                        null, //
                        OrderDetailActivity.this, //
                        AlertView.Style.Alert, //
                        new OnItemClickListener() {
                            @Override
                            public void onItemClick(Object o, int position) {

                                if (position != AlertView.CANCELPOSITION) {

                                    //用户取消订单接口
                                    methodOrderReceipt(orderNumbmer);
                                }
                            }
                        });

                mAlertView.setCancelable(true).show();//

            }
        });

    }*/

    /**
     * 通用的跳转到申请退货的列表方法
     */
//    private void methodToApplyForList(MyOrderBean _orderBean) {
//
//        Bundle bundle_extra = new Bundle();
//
//        //这里传入订单编号。
//        bundle_extra.putString(ExtraKey.EXTRA_ORDERNO, _orderBean.getOrderNo());
//
//        //携带是否是 会员商品：因为会员商品只能整单退，进到退货页面的话，默认全部勾中，不能编辑。
//        bundle_extra.putInt(ExtraKey.EXTRA_ORDER_RETURNAPPLY_ISVIPORDER, _orderBean.getIsVipOrder());
//
//        //bundle_extra.putParcelableArrayList("key",mDatasResources.get(0).getOrderDetails());
//
////        ActivityUtils.startActivity(bundle_extra, ApplyForGoodsActivity.class);
//
//    }

    /**
     * 通用的跳转到退货详情的方法,应该有退货详情页面
     */
    private void methodToApplyForDetail(MyOrderBean _orderBean, String _returnApplyNo) {

        Bundle bundle_extra = new Bundle();

        //也得携带是否是会员商品，因为会员商品：是次卡月卡买的，没有退款金额等等
        bundle_extra.putInt(ExtraKey.EXTRA_ORDER_RETURNAPPLY_ISVIPORDER, _orderBean.getIsVipOrder());

        //仅仅将返回来的订货单号返回来，用于下一个界面 查询
        bundle_extra.putString(ExtraKey.EXTRA_ORDER_RETURNAPPLYNO, _returnApplyNo);

        ActivityUtils.startActivity(bundle_extra, ApplyForDetailActivity.class);

    }

    /**
     * 【确认收货】【申请退货】【退货详情】三个按钮的逻辑
     * 最后一个参数：退货单号，仅仅用在【退货详情】的时候使用
     */
    //public void layoutApplyButtonLogic(int _flagView, final String _orderNumbmer, String _returnApplyNo) {
    public void layoutApplyButtonLogic(int _flagView, MyOrderBean _orderBean, String _returnApplyNo) {

        switch (_flagView) {

            case SHOW_NO_TWO_APPLY: {//三个按钮都不展示

                CommUtils.setViewGone(layoutTwoApplyButton);//包裹【确认收货】【申请退货】【退货详情】不展示

                //订单待付款状态，导致【确认收货】【申请退货】【退货详情】都不展示
                CommUtils.setViewGone(buttonApplyForDetail);//【退货详情】隐藏
                CommUtils.setViewGone(buttonApplyForOrder);//【申请退货】隐藏
                CommUtils.setViewGone(buttonConfirmReceipt);//【确认收货】隐藏

                break;

            }

            case SHOW_CONFIRM_APPLYFOR_APPLY: {//【确认收货】【申请退货】

                CommUtils.setViewVisible(layoutTwoApplyButton);

                CommUtils.setViewGone(buttonApplyForDetail);//【退货详情】隐藏
                CommUtils.setViewVisible(buttonApplyForOrder);//【申请退货】展示
                CommUtils.setViewVisible(buttonConfirmReceipt);//【确认收货】展示

                //且【申请退货】有逻辑，展示
                buttonApplyForOrder.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        if (!DoubleClickListener.isFastDoubleClick()) {

//                            methodToApplyForList(_orderBean);

                        }

                    }
                });


                //且这里【确认收货】有逻辑，展示
                buttonConfirmReceipt.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        //确认收货接口
                        CommUtils.checkDialog(mAlertView);

                        mAlertView = new AlertView("", //
                                "确认收货吗？", //
                                "取消", //
                                new String[]{"确定"}, //
                                null, //
                                OrderDetailActivity.this, //
                                AlertView.Style.Alert, //
                                new OnItemClickListener() {
                                    @Override
                                    public void onItemClick(Object o, int position) {

                                        if (position != AlertView.CANCELPOSITION) {

                                            //用户取消订单接口
//                                            methodOrderReceipt(_orderBean.getOrderNo());

                                        }
                                    }
                                });

                        mAlertView.setCancelable(true).show();//

                    }
                });

                break;
            }

            case SHOW_CONFIRM_APPLYDETAIL_APPLY: {//展示【确认收货】和【退货详情】

                CommUtils.setViewVisible(layoutTwoApplyButton);

                CommUtils.setViewVisible(buttonConfirmReceipt);//【确认收货】展示
                CommUtils.setViewVisible(buttonApplyForDetail);//【退货详情】展示
                CommUtils.setViewGone(buttonApplyForOrder);//【申请退货】隐藏

                //且这里【退货详情】按钮有逻辑
                if (!TextUtils.isEmpty(_returnApplyNo)) {

                    buttonApplyForDetail.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {

                            if (!DoubleClickListener.isFastDoubleClick()) {

                                methodToApplyForDetail(_orderBean, _returnApplyNo);

                            }

                        }
                    });
                } else {//为空 是因为未发起【申请退货】不展示【退货详情】。
                    ToastUtils.make().setGravity(Gravity.CENTER, 0, 0);
                    ToastUtils.showShort("数据异常~");
                }

                //且这里【确认收货】有逻辑，展示
                buttonConfirmReceipt.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        //确认收货接口
                        CommUtils.checkDialog(mAlertView);

                        mAlertView = new AlertView("", //
                                "确认收货吗？", //
                                "取消", //
                                new String[]{"确定"}, //
                                null, //
                                OrderDetailActivity.this, //
                                AlertView.Style.Alert, //
                                new OnItemClickListener() {
                                    @Override
                                    public void onItemClick(Object o, int position) {

                                        if (position != AlertView.CANCELPOSITION) {

                                            //用户取消订单接口
//                                            methodOrderReceipt(_orderBean.getOrderNo());

                                        }
                                    }
                                });

                        mAlertView.setCancelable(true).show();//

                    }
                });


                break;
            }

            case SHOW_CONFIRM_ONLY_APPLY: {//仅仅展示【确认收货】

                CommUtils.setViewVisible(layoutTwoApplyButton);

                CommUtils.setViewVisible(buttonConfirmReceipt);//【确认收货】展示
                CommUtils.setViewGone(buttonApplyForDetail);//【退货详情】隐藏
                CommUtils.setViewGone(buttonApplyForOrder);//【申请退货】隐藏

                //且这里 确认收货有逻辑，展示
                buttonConfirmReceipt.setOnClickListener(new View.OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        //确认收货接口
                        CommUtils.checkDialog(mAlertView);

                        mAlertView = new AlertView("", //
                                "确认收货吗？", //
                                "取消", //
                                new String[]{"确定"}, //
                                null, //
                                OrderDetailActivity.this, //
                                AlertView.Style.Alert, //
                                new OnItemClickListener() {
                                    @Override
                                    public void onItemClick(Object o, int position) {

                                        if (position != AlertView.CANCELPOSITION) {

                                            //用户取消订单接口
//                                            methodOrderReceipt(_orderBean.getOrderNo());

                                        }
                                    }
                                });

                        mAlertView.setCancelable(true).show();//

                    }
                });

                break;
            }

            case SHOW_APPLYDETAIL_ONLY_APPLY: {//【退货详情】展示

                //订单状态已完成，但是申请过退货，也处理完毕退货，那么仅仅展示【退货详情按钮】
                CommUtils.setViewVisible(layoutTwoApplyButton);

                CommUtils.setViewGone(buttonConfirmReceipt);//【确认收货】隐藏
                CommUtils.setViewVisible(buttonApplyForDetail);//【退货详情】展示
                CommUtils.setViewGone(buttonApplyForOrder);//【申请退货】隐藏

                //且这里【退货详情】按钮有逻辑
                if (!TextUtils.isEmpty(_returnApplyNo)) {

                    buttonApplyForDetail.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {

                            if (!DoubleClickListener.isFastDoubleClick()) {

                                methodToApplyForDetail(_orderBean, _returnApplyNo);

                            }

                        }
                    });
                } else {
                    ToastUtils.make().setGravity(Gravity.CENTER, 0, 0);
                    ToastUtils.showShort("数据异常~");
                }

                break;
            }

            default:
                break;
        }


    }

    /**
     * @date 2018/3/29 0029
     * @auther itchenqi
     * @description 【取消订单】和【立即付款，去支付】的按钮_flagView标识
     */
    private void layoutPayButtonLogic(int _flagView, final String _orderNumbmer) {

        switch (_flagView) {

            case SHOW_CANCELORDER_ONLY_PAY: {//展示取消订单按钮,仅仅展示一个

                CommUtils.setViewVisible(layoutTwoPayButton);
                CommUtils.setViewGone(buttonGoPay);
                CommUtils.setViewVisible(buttonCancelOrder);

                //这种状态才让两个按钮有点击事件
                if (buttonCancelOrder.getVisibility() == View.VISIBLE) {

                    buttonCancelOrder.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            orderCancelDialog(_orderNumbmer);

                        }
                    });

                }

                break;
            }

            case SHOW_CANCEL_SUREPAY_TWO_PAY: {//展示取消订单和立即付款两个按钮

                CommUtils.setViewVisible(layoutTwoPayButton);
                CommUtils.setViewVisible(buttonGoPay);
                CommUtils.setViewVisible(buttonCancelOrder);

                //这种状态才让两个按钮有点击事件
                if (buttonCancelOrder.getVisibility() == View.VISIBLE) {

                    buttonCancelOrder.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            orderCancelDialog(_orderNumbmer);

                        }
                    });

                }

                if (buttonGoPay.getVisibility() == View.VISIBLE) {

                    buttonGoPay.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                            if (!DoubleClickListener.isFastDoubleClick()) {

//                                //跳转到立即付款界面，携带定单号过去
//                                Bundle bundle = new Bundle();
//                                //标志是从订单详情跳转过去的
//                                bundle.putInt(ConstantApi.EXTRA_JUMPFROM_WHERE, ConstantApi.VALUE_JUMPFROM_ORDERDETAIL);
//                                bundle.putString(ConstantApi.EXTRA_ORDERNO, _orderNumbmer);
//
//                                //将来改造成使用 trans
//                                ActivityUtils.startActivity(bundle, AccountPayTransActivity.class);
//                                //ActivityUtils.startActivity(bundle, AccountPayActivity.class);

                            }

                        }
                    });
                }


                break;
            }

            case SHOW_NO_TWO_PAY: {//两个按钮均不展示，且外侧布局也不能展示

                CommUtils.setViewGone(layoutTwoPayButton);

                break;
            }


            default:
                break;
        }


    }


    /**
     * @date 2018/3/29 0029
     * @auther itchenqi
     * @description 取消订单的弹窗内容
     */
    private void orderCancelDialog(final String _orderNumbmer) {

        CommUtils.checkDialog(mAlertView);

        mAlertView = new AlertView("", //
                "确定取消该订单吗？", //
                "取消", //
                new String[]{"确定"}, //
                null, //
                OrderDetailActivity.this, //
                AlertView.Style.Alert, //

                new OnItemClickListener() {
                    @Override
                    public void onItemClick(Object o, int position) {

                        if (position != AlertView.CANCELPOSITION) {

                            //用户取消订单接口
//                            methodOrderCancel(_orderNumbmer);/
                            //methodOrderReceipt(orderNumbmer);

                        }
                    }
                });

        mAlertView.setCancelable(true).show();//


    }

    /**
     * 描述支付类型
     */
    /*private void method_paytype(TextView textviewPayTypeDes,//
                                String payMode,//
                                String payTypeInfo) {//

        if (TextUtils.equals(payMode, ConstantApi.PAY_WECHAT)) {
            CommUtils.setText(textviewPayTypeDes, payTypeInfo);
        } else if (TextUtils.equals(payMode, ConstantApi.PAY_ALIPAY)) {
            CommUtils.setText(textviewPayTypeDes, payTypeInfo);
        } else if (TextUtils.equals(payMode, ConstantApi.PAY_DGJ)) {
            CommUtils.setText(textviewPayTypeDes, payTypeInfo);
        } else if (TextUtils.equals(payMode, ConstantApi.FREE_BUY)) {
            //2019年 奥莱发现时零元购的类型
            //payTypeInfo 这个字段内容
            //这个动态特殊
            CommUtils.setText(textviewPayTypeDes, payTypeInfo);
        }
    }*/


//    private HttpListener<JSONObject> httpListener = new HttpListener<JSONObject>() {
//
//        @Override
//        public void onSucceed(int what, Response<JSONObject> response, Request<JSONObject> request, Map<String, Object> hashMap) {
//
//            if (response.getHeaders().getResponseCode() == 200) {
//                apiRequestListener.onSuccess(what, response, request, hashMap);
//            } else {
//                //http报非200的报错内容
//                netWorkError();
//                //setEnableLoadmore(refreshLayoutInDetail,false);
//            }
//        }
//
//        @Override
//        public void onFailed(int what, Response<JSONObject> response, Request<JSONObject> request, Map<String, Object> hashMap) {
//
//            //setEnableLoadmore(refreshLayoutInDetail,false);
//            CommUtils.onFailed(OrderDetailActivity.this, ConstantApi.ONFAILED_PAGE, response);
//
//        }
//    };

    /**
     * 确认收货按钮接口
     */
//    private void methodOrderReceipt(String _orderNo) {
//
//        ///auth/v1/order/confirmReceipt
//        //String requestUrl = Constants.getInstance().confirmReceipt();
//
//        Request<JSONObject> request = NoHttp.createJsonObjectRequest(Constants.getInstance().confirmReceipt(), RequestMethod.POST);
//
//        Map<String, Object> map = new HashMap<>();
//        map.put("orderNo", _orderNo);
//        request.setDefineRequestBodyForJson(JSON.toJSONString(map));
//
//        startRequest(ConstantApi.WHAT_CONFIRMRECEIPT, request, map, httpListener, true, true);
//
//
//    }

    /**
     * 取消订单
     */
//    private void methodOrderCancel(String _orderNo) {
//
//        //String requestUrl = Constants.getInstance().cancelOrder();
//        Request<JSONObject> request = NoHttp.createJsonObjectRequest(Constants.getInstance().cancelOrder(), RequestMethod.POST);
//
//        Map<String, Object> map = new HashMap<>();
//        map.put("orderNo", _orderNo);
//        request.setDefineRequestBodyForJson(JSON.toJSONString(map));
//
//        startRequest(ConstantApi.WHAT_CANCELORDER, request, map, httpListener, true, true);
//
//
//    }

    /**
     * 获取订单详情页接口
     */
//    private void getServerDatas(String _orderNo) {
//
//        //String requestUrl = Constants.getInstance().getOrderDetail() + "/" + _orderNo;
//        Request<JSONObject> request = NoHttp.createJsonObjectRequest(Constants.getInstance().getOrderDetail() + "/" + _orderNo, RequestMethod.GET);
//
//        HashMap<String, Object> hashMap = new HashMap<>();
//        hashMap.put("orderNo", _orderNo);
//
//        startRequest(ConstantApi.WHAT_GETORDERDETAIL, request, hashMap, httpListener, true, true);
//
//    }
    @Override
    public void methodBack() {

        if (ActivityUtils.isActivityAlive(this)) {
            ActivityUtils.finishActivity(this);
        }

    }

}
